home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ETO Development Tools 4
/
ETO Development Tools 4.iso
/
Tools - Objects
/
Macintosh Programmer’s Workshop
/
MPW 3.1
/
MPW
/
Interfaces
/
CIncludes
/
Slots.h
< prev
next >
Wrap
Text File
|
1990-12-13
|
7KB
|
186 lines
/************************************************************
Created: Thursday, September 7, 1989 at 7:29 PM
Slots.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1986-1989
All rights reserved
************************************************************/
#ifndef __SLOTS__
#define __SLOTS__
#ifndef __TYPES__
#include <Types.h>
#endif
#ifndef __OSEVENTS__
#include <OSEvents.h>
#endif
#ifndef __OSUTILS__
#include <OSUtils.h>
#endif
#ifndef __FILES__
#include <Files.h>
#endif
#define fCardIsChanged 1 /*Card is Changed field in StatusFlags field of sInfoArray*/
#define fCkForSame 0 /*For SearchSRT. Flag to check for SAME sResource in the table. */
#define fCkForNext 1 /*For SearchSRT. Flag to check for NEXT sResource in the table. */
#define fWarmStart 2 /*If this bit is set then warm start else cold start.*/
#define stateNil 0 /*State*/
#define stateSDMInit 1 /*:Slot declaration manager Init*/
#define statePRAMInit 2 /*:sPRAM record init*/
#define statePInit 3 /*:Primary init*/
#define stateSInit 4 /*:Secondary init*/
struct SlotIntQElement {
Ptr sqLink; /*ptr to next element*/
short sqType; /*queue type ID for validity*/
short sqPrio; /*priority*/
ProcPtr sqAddr; /*interrupt service routine*/
long sqParm; /*optional A1 parameter*/
};
typedef struct SlotIntQElement SlotIntQElement;
typedef SlotIntQElement *SQElemPtr;
struct SpBlock {
long spResult; /*FUNCTION Result*/
Ptr spsPointer; /*structure pointer*/
long spSize; /*size of structure*/
long spOffsetData; /*offset/data field used by sOffsetData*/
Ptr spIOFileName; /*ptr to IOFile name for sDisDrvrName*/
Ptr spsExecPBlk; /*pointer to sExec parameter block.*/
Ptr spStackPtr; /*old Stack pointer.*/
long spMisc; /*misc field for SDM.*/
long spReserved; /*reserved for future expansion*/
short spIOReserved; /*Reserved field of Slot Resource Table*/
short spRefNum; /*RefNum*/
short spCategory; /*sType: Category*/
short spCType; /*Type*/
short spDrvrSW; /*DrvrSW*/
short spDrvrHW; /*DrvrHW*/
char spTBMask; /*type bit mask bits 0..3 mask words 0..3*/
char spSlot; /*slot number*/
char spID; /*structure ID*/
char spExtDev; /*ID of the external device*/
char spHwDev; /*Id of the hardware device.*/
char spByteLanes; /*bytelanes from card ROM format block*/
char spFlags; /*standard flags*/
char spKey; /*Internal use only*/
};
typedef struct SpBlock SpBlock;
typedef SpBlock *SpBlockPtr;
struct SInfoRecord {
Ptr siDirPtr; /*Pointer to directory*/
short siInitStatusA; /*initialization E*/
short siInitStatusV; /*status returned by vendor init code*/
char siState; /*initialization state*/
char siCPUByteLanes; /*0=[d0..d7] 1=[d8..d15]*/
char siTopOfROM; /*Top of ROM= $FssFFFFx: x is TopOfROM*/
char siStatusFlags; /*bit 0 - card is changed*/
short siTOConst; /*Time Out C for BusErr*/
char siReserved[2]; /*reserved*/
};
typedef struct SInfoRecord SInfoRecord;
typedef SInfoRecord *SInfoRecPtr;
struct SDMRecord {
ProcPtr sdBEVSave; /*Save old BusErr vector*/
ProcPtr sdBusErrProc; /*Go here to determine if it is a BusErr*/
ProcPtr sdErrorEntry; /*Go here if BusErrProc finds real BusErr*/
long sdReserved; /*Reserved*/
};
typedef struct SDMRecord SDMRecord;
struct FHeaderRec {
long fhDirOffset; /*offset to directory*/
long fhLength; /*length of ROM*/
long fhCRC; /*CRC*/
char fhROMRev; /*revision of ROM*/
char fhFormat; /*format - 2*/
long fhTstPat; /*test pattern*/
char fhReserved; /*reserved*/
char fhByteLanes; /*ByteLanes*/
};
typedef struct FHeaderRec FHeaderRec;
typedef FHeaderRec *FHeaderRecPtr;
struct SEBlock {
unsigned char seSlot; /*Slot number.*/
unsigned char sesRsrcId; /*sResource Id.*/
short seStatus; /*Status of code executed by sExec.*/
unsigned char seFlags; /*Flags*/
unsigned char seFiller0; /*Filler, must be SignedByte to align on odd boundry*/
unsigned char seFiller1; /*Filler*/
unsigned char seFiller2; /*Filler*/
long seResult; /*Result of sLoad.*/
long seIOFileName; /*Pointer to IOFile name.*/
unsigned char seDevice; /*Which device to read from.*/
unsigned char sePartition; /*The partition.*/
unsigned char seOSType; /*Type of OS.*/
unsigned char seReserved; /*Reserved field.*/
unsigned char seRefNum; /*RefNum of the driver.*/
unsigned char seNumDevices; /* Number of devices to load.*/
unsigned char seBootState; /*State of StartBoot code.*/
};
typedef struct SEBlock SEBlock;
#ifdef __cplusplus
extern "C" {
#endif
pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot);
pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot);
pascal OSErr SReadByte(SpBlockPtr spBlkPtr);
pascal OSErr SReadWord(SpBlockPtr spBlkPtr);
pascal OSErr SReadLong(SpBlockPtr spBlkPtr);
pascal OSErr SGetCString(SpBlockPtr spBlkPtr);
pascal OSErr SGetBlock(SpBlockPtr spBlkPtr);
pascal OSErr SFindStruct(SpBlockPtr spBlkPtr);
pascal OSErr SReadStruct(SpBlockPtr spBlkPtr);
pascal OSErr SReadInfo(SpBlockPtr spBlkPtr);
pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr);
pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr);
pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr);
pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr);
pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr);
pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr);
pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr);
pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr);
pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr);
pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr);
pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr);
pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr);
pascal OSErr SCardChanged(SpBlockPtr spBlkPtr);
pascal OSErr SExec(SpBlockPtr spBlkPtr);
pascal OSErr SOffsetData(SpBlockPtr spBlkPtr);
pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr);
pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr);
pascal OSErr SCalcStep(SpBlockPtr spBlkPtr);
pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr);
pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr);
pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr);
pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr);
pascal OSErr SGetDriver(SpBlockPtr spBlkPtr);
pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr);
pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr);
pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr);
pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr);
pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean aSync);
#ifdef __cplusplus
}
#endif
#endif